#include <iostream>
#include <vector>
#include <cmath>
#include <cstring>

using namespace std;

const int N = 25;

vector<int> path;
int n, a[N];
bool st[N];
int num;

bool check(int m)
{
	if(m == 2) return true;
	for(int i = 2; i <= sqrt(m); i++)
	{
		if(m % i == 0) return false;
	}
	return true;
}

void dfs(int pos)
{
	if(pos == n && check(a[0] + a[n - 1]))
	{
		for(int i = 0; i < n; i++)
		{
			cout << a[i] << " ";
		}
		cout << endl;
		return;
	}
	for(int i = 2; i <= n; i++)
	{
		if(check(i + a[pos - 1]) && !st[i] )
		{
			a[pos] = i;
			st[i] = true;
			dfs(pos + 1);
			st[i] = false;
		}
	}
}

int main()
{
	a[0] = 1;
	while(cin >> n)
	{
		memset(st, 0, sizeof st);
		++num;
		printf("Case %d:\n", num);
		dfs(1);
		
	}
	
	return 0;
}
